/*currying 又称部分求值*/
/*假设我们要编写一个计算每月开销的函数。在每天结束之前，我们都要记录今天花掉了多少钱*/

/*var monthlyCost=0;
var cost=function(money){
monthlyCost+=money;
}
cost(100);
cost(200);
cost(400);
console.log(monthlyCost)*/
/*上面的代码每次都进行计算并求值*/
/*如果在每个月的前29 天，我们都只是保存好当天的开销，直到第30 天才进行求值计算，这
样就达到了我们的要求。虽然下面的cost 函数还不是一个currying 函数的完整实现，但有助于
我们了解其思想：*/
var cost=(function(){
    var args=[];
    return function(){
        if(arguments.length===0){
            var money=0;
            for(var i=0,l=args.length;i<l;i++){money+=args[i];}
            return money;
        }else {[].push.apply(args,arguments);}
    }

})();
cost( 100 ); // 未真正求值
cost( 200 ); // 未真正求值
cost( 300 ); // 未真正求值
console.log( cost() ); // 求值并输出：600


